package ord2.exec;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.xml.parsers.ParserConfigurationException;
import ord2.log.LogSystem;
import org.xml.sax.SAXException;

/**
 *
 * @author SemiNick
 */
public final class nDou {

    public static boolean LOG;
    
    public static void main(String[] args) {
        
        try {
            
            File conf = null;
            File log = null;
            boolean help = true;
            LogSystem.LOG = true;

            for (int i = 0; i < args.length; i++) {

                if (args[i].equals("--file")) {

                    i++;
                    conf = new File(args[i]);
                    help = false;
                } else if (args[i].equals("--log")) {

                    i++;
                    if (args[i].equals("true")) {

                        LogSystem.LOG = true;
                    } else if (args[i].equals("false")) {

                        LogSystem.LOG = false;
                    } else {

                        LogSystem.logMessage("Valor inválido para --log");
                    }
                } else if (args[i].equals("--logfile")) {

                    i++;
                    log = new File(args[i]);
                }
            }

            if (help) {

                printHelp();
                System.exit(0);
            } else if (conf == null) {

                LogSystem.logMessage("Nenhum arquivo de configuração encontrado");
                printHelp();
                System.exit(0);
            }

            if (log != null && !log.exists()) {

                    log.createNewFile();
                    LogSystem.setStream(new FileOutputStream(log));
            }

            LogSystem.logMessage("Inicializando Sistema...");

            if (conf.exists()) {

                ConfigurationParser.processConfigurationXML(conf);
            } else {

                LogSystem.logMessage("Não foi possível encontrar o arquivo de configuração");
            }
        
        } catch (Exception e) {
            
            LogSystem.logMessage("Parada inesperada do sistema. ='[");
            LogSystem.logMessage(e.getMessage());
            e.printStackTrace();
        }
        
    }
    
    private static void printHelp() {
        
        System.out.println("nDou - Sistema de Monitoramento do Diário Oficial da União");
        System.out.println("--help Mostra ajuda");
        System.out.println("--file [path] Especifica localização do arquivo de configuração");
        System.out.println("--log [true|false]");
        System.out.println("--logfile [path] Localização do arquivo de saída de log caso log esteja habilitado");
    }
}
